查看原文
其他

干货|吴恩达 DeepLearning.ai 课程提炼笔记(1-2)神经网络和深度学习 --- 神经网络基础

2017-10-02 大树先生 机器学习算法与自然语言处理

以下为在Coursera上吴恩达老师的DeepLearning.ai课程项目中,第一部分《神经网络和深度学习》第二周课程部分关键点的笔记。


笔记并不包含全部小视频课程的记录,如需学习笔记中舍弃的内容请至 Coursera 或者 网易云课堂。同时在阅读以下笔记之前,强烈建议先学习吴恩达老师的视频课程。


1二分类问题


目标数据的形状:

2 logistic Regression



注意点:函数的一阶导数可以用其自身表示,


3  logistic回归 损失函数


Loss function


一般经验来说,使用平方错误(squared error)来衡量Loss Function:

但是,对于logistic regression 来说,一般不适用平方错误来作为Loss Function,这是因为上面的平方错误损失函数一般是非凸函数(non-convex),其在使用低度下降算法的时候,容易得到局部最优解,而不是全局最优解。因此要选择凸函数。

逻辑回归的Loss Function:




Cost function


全部训练数据集的Loss function总和的平均值即为训练集的代价函数(Cost function)。

  • Cost function是待求系数w和b的函数;

  • 我们的目标就是迭代计算出最佳的w和b的值,最小化Cost function,让其尽可能地接近于0。


4 梯度下降


5 逻辑回归中的梯度下降法


对单个样本而言,逻辑回归Loss function表达式:

6 m个样本的梯度下降



7 向量化(Vectorization)

 

在深度学习的算法中,我们通常拥有大量的数据,在程序的编写过程中,应该尽最大可能的少使用loop循环语句,利用python可以实现矩阵运算,进而来提高程序的运行速度,避免for循环的使用。


逻辑回归向量化


python代码:


db = 1/m*np.sum(dZ)


单次迭代梯度下降算法流程


Z = np.dot(w.T,X) + b
A = sigmoid(Z)
dZ = A-Ydw = 1/m*np.dot(X,dZ.T)
db = 1/m*np.sum(dZ)
w = w - alpha*dwb = b - alpha*db


8 python的notation


虽然在Python有广播的机制,但是在Python程序中,为了保证矩阵运算的正确性,可以使用reshape()函数来对矩阵设定所需要进行计算的维度,这是个好的习惯;


如果用下列语句来定义一个向量,则这条语句生成的a的维度为(5,),既不是行向量也不是列向量,称为秩(rank)为1的array,如果对a进行转置,则会得到a本身,这在计算中会给我们带来一些问题。


a = np.random.randn(5)


如果需要定义(5,1)或者(1,5)向量,要使用下面标准的语句:


a = np.random.randn(5,1)
b = np.random.randn(1,5)


可以使用assert语句对向量或数组的维度进行判断。assert会对内嵌语句进行判断,即判断a的维度是不是(5,1),如果不是,则程序在此处停止。使用assert语句也是一种很好的习惯,能够帮助我们及时检查、发现语句是否正确。


assert(a.shape == (5,1))


可以使用reshape函数对数组设定所需的维度


a.reshape((5,1))


9  logistic regression代价函数的解释


Cost function的由来

专栏:https://zhuanlan.zhihu.com/p/29688927

推荐阅读:

精选干货|近半年干货目录汇总

干货|台湾大学林轩田机器学习基石课程学习笔记5 -- Training versus Testing

干货|MIT线性代数课程精细笔记[第一课]


               欢迎关注公众号学习交流~          

              欢迎加入交流群交流学习             



您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存